/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ar.com.siglo21.ppo.persistence.dao;

import ar.com.siglo21.ppo.model.Ejemplar;
import ar.com.siglo21.ppo.model.Estado;
import ar.com.siglo21.ppo.model.EstadoPrestamo;
import ar.com.siglo21.ppo.model.Genero;
import ar.com.siglo21.ppo.model.Libro;
import ar.com.siglo21.ppo.model.Prestamo;
import ar.com.siglo21.ppo.model.Socio;
import ar.com.siglo21.ppo.persistence.MySQLConnection;
import ar.com.siglo21.ppo.util.TrabajoIntegradorException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class PrestamoDAOImpl implements PrestamoDAO {

    @Override
    public void agregar(Prestamo object) throws TrabajoIntegradorException, SQLException {
        String sql = "Insert into prestamo(id_socio,id_estadoprestamo,id_ejemplar,fecha_inicio) values ('" + object.getSocio().getId()+  "','"+object.getEstadoPrestamo().getId()+"','"+object.getEjemplar().getId()+"','"+object.getFechaInicio()+"')";
        MySQLConnection.getDbCon().insertORDeleteORUpdate(sql);
    }

    @Override
    public boolean existe(Prestamo object) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void eliminar(Prestamo object) throws TrabajoIntegradorException, SQLException {

        String sql = "DELETE FROM autor where id=" + object.getId();
        MySQLConnection.getDbCon().insertORDeleteORUpdate(sql);
    }

    @Override
    public Prestamo leer(int id) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void actualizar(Prestamo object) throws TrabajoIntegradorException, SQLException {
//        String sql="UPDATE ejemplar SET nombre='"+object.getNombre()+"',"+ "apellido='"+object.getApellido()+"'" +" where id="+object.getId();
//       MySQLConnection.getDbCon().insertORDeleteORUpdate(sql);
    }

    @Override
    public List<Prestamo> listarPrestamos() throws SQLException, TrabajoIntegradorException {
        String sql="Select * from prestamo p, socio s, ejemplar ej, estadoprestamo ep, libro l where p.id_socio=s.id and p.id_ejemplar=ej.id and p.id_estadoprestamo=ep.id and ej.id_libro=l.id";
        MySQLConnection.getDbCon().query(sql);
        
        Prestamo prestamo;
        EstadoPrestamo estadoPrestamo;
        Socio socio;
        Ejemplar ejemplar;
        Libro libro;

        List<Prestamo> listaPrestamos = new ArrayList();
        ResultSet resulset = MySQLConnection.getDbCon().query(sql);

        while (resulset.next()) {
            prestamo = new Prestamo();
            estadoPrestamo = new EstadoPrestamo();
            socio = new Socio();
            ejemplar = new Ejemplar();
            libro = new Libro();
            
            prestamo.setId(resulset.getInt(1));
            prestamo.setFechaInicio(resulset.getString(5));
            
            socio.setId(resulset.getInt(7));
            socio.setApellido(resulset.getString(9));
            socio.setNombre(resulset.getString(8));
            socio.setDni(resulset.getInt(10));
            
            prestamo.setSocio(socio);
            
            ejemplar.setDescripcion(resulset.getString(16));
            
            libro.setTitulo(resulset.getString(20));
            
            ejemplar.setLibro(libro);
            
            
            prestamo.setEjemplar(ejemplar);
            
            estadoPrestamo.setId(resulset.getInt(17));
            estadoPrestamo.setDescripcion(resulset.getString(18));
            
            prestamo.setEstadoPrestamo(estadoPrestamo);
            
            
          
            listaPrestamos.add(prestamo);
        }

        return listaPrestamos;
    }

    
}
